﻿/*
 * 
 * Quisczicza's Userbox Editor
 * Copyright (C) 2008, Tar Dániel (User:Dani)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * 
 * Ez a program szabad szoftver; terjeszthető illetve módosítható a 
 * Free Software Foundation által kiadott GNU General Public License
 * dokumentumában leírtak; akár a licenc 3-as, akár (tetszőleges) későbbi 
 * változata szerint.
 * 
 * Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, 
 * de minden egyéb GARANCIA NÉLKÜL, az ELADHATÓSÁGRA vagy VALAMELY CÉLRA 
 * VALÓ ALKALMAZHATÓSÁGRA való származtatott garanciát is beleértve. 
 * További részleteket a GNU General Public License tartalmaz.
 * 
 * A felhasználónak a programmal együtt meg kell kapnia a GNU General 
 * Public License egy példányát; ha mégsem kapta meg, akkor
 * tekintse meg a <http://www.gnu.org/licenses/> oldalon.
 * 
 */

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace userboxeditor
{

    public partial class Főablak : Form
    {
        private string programVerzió = "0.04";

        public Főablak()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if ((checkBox1.Checked == false && (userboxNeve.Text=="" || userboxKategória.Text==""))
                    || userboxSzöveg.Text == "" || userboxKép.Text == ""){
                if (userboxNeve.Text == "" && checkBox1.Checked == false)
                {
                    userboxNeve.BackColor = System.Drawing.Color.PaleVioletRed;
                }
                if (userboxKategória.Text == "" && checkBox1.Checked == false)
                {
                    userboxKategória.BackColor = System.Drawing.Color.PaleVioletRed;
                }
                if (userboxSzöveg.Text == "")
                {
                    userboxSzöveg.BackColor = System.Drawing.Color.PaleVioletRed;
                }
                if (userboxKép.Text == "")
                {
                    userboxKép.BackColor = System.Drawing.Color.PaleVioletRed;
                }
                MessageBox.Show("Nem töltötted ki az összes kötelező mezőt.", "Hiba", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            string kategória = "", igazítás = "", sablonKategória = "";

            if (checkBox1.Checked == false)
            {
                if (szerkesztőKategória.Text != "")
                {
                    kategória = "<includeonly>{{#ifeq:{{SUBJECTSPACE}}|Szerkesztő|[[Kategória:" + szerkesztőKategória.Text + "|{{PAGENAME}}]]}}</includeonly>";
                }

                sablonKategória = "<noinclude>[[Kategória:" + userboxKategória.Text +
                   "|" + userboxNeve.Text + "]]</noinclude>";
            }

            if (igazításVálasztó.Text!="left") {
                igazítás = igazításVálasztó.Text;
            }

            string szöveg = userboxSzöveg.Text;

            szöveg = Regex.Replace(szöveg, "\\<link\\|(?<sz1>.{1,})\\|(?<sz2>.*?)\\|(?<sz3>#?[0-9ABCDEFabcdef]{6})?\\>", "{{színes link|${sz1}|${sz2}|{{{link|${sz3}}}}}}", RegexOptions.ExplicitCapture);

            if (szöveg.IndexOf("<link") > -1)
            {
                MessageBox.Show("A szövegben hibás link található. Kérlek javítsd!", "Hiba", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (checkBox1.Checked == false)
            {
                Clipboard.SetText("{{Userbox/új" +
                       "|1={{{kép|" + userboxKép.Text +               // 1. paraméter: userbox képe
                       "}}}|2=" + szöveg +                            // 2. paraméter: userbox szövege
                       "|3={{{keret|" +                               // 3. paraméter: keret színe
                             QcColorConverter.színbőlString(userboxKeretPanel.BackColor) +
                       "}}}|4={{{kép háttere|" +                      // 4. paraméter: kép háttere
                             QcColorConverter.színbőlString(userboxKépPanel.BackColor) +
                       "}}}|5={{{szöveg háttere|" +                   // 5. paraméter: szöveg háttere
                             QcColorConverter.színbőlString(userboxSzövegPanel.BackColor) +
                       "}}}|6={{{kép szövegének színe|" +             // 6. paraméter: kép helyén lévő szöveg színe
                             QcColorConverter.színbőlString(képHelye.ForeColor) +
                       "}}}|7={{{szöveg színe|" +                     // 7. paraméter: szöveg színe
                             QcColorConverter.színbőlString(szövegHelye.ForeColor) +
                       "}}}|8={{{igazítás|" +
                             igazítás +                             //8. paraméter: szöveg igazítása
                       "}}}|9={{{keret vastagsága|" +
                             keretMérete.Value.ToString() +         // 9. paraméter: keret vastagsága
                       "}}}}}" + kategória +                        // sablon lezárása, szerkesztő kategorizálása
                       sablonKategória);                            // sablon kategorizálása
            }
            else
            {
                Clipboard.SetText("{{Userbox/új" +
                       "|1=" + userboxKép.Text +                      // 1. paraméter: userbox képe
                       "|2=" + szöveg +                               // 2. paraméter: userbox szövege
                       "|3=" +                                        // 3. paraméter: keret színe
                             QcColorConverter.színbőlString(userboxKeretPanel.BackColor) +
                       "|4=" +                                        // 4. paraméter: kép háttere
                             QcColorConverter.színbőlString(userboxKépPanel.BackColor) +
                       "|5=" +                                        // 5. paraméter: szöveg háttere
                             QcColorConverter.színbőlString(userboxSzövegPanel.BackColor) +
                       "|6=" +                                        // 6. paraméter: kép helyén lévő szöveg színe
                             QcColorConverter.színbőlString(képHelye.ForeColor) +
                       "|7=" +                                        // 7. paraméter: szöveg színe
                             QcColorConverter.színbőlString(szövegHelye.ForeColor) +
                       "|8=" + igazítás +                             // 8. paraméter: szöveg igazítása
                       "|9=" + keretMérete.Value.ToString() +         // 9. paraméter: keret vastagsága
                       "}}");
            }

            MessageBox.Show("A userbox elkészült, és a vágólapra lett másolva.", "Userbox Editor", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void színekFrissítése()
        {
            keretSzínText.Text = QcColorConverter.színbőlString(userboxKeretPanel.BackColor);
            képHáttérText.Text = QcColorConverter.színbőlString(userboxKépPanel.BackColor);
            szövegHáttérText.Text = QcColorConverter.színbőlString(userboxSzövegPanel.BackColor);
            képSzövegSzínText.Text = QcColorConverter.színbőlString(képHelye.ForeColor);
            szövegSzínText.Text = QcColorConverter.színbőlString(szövegHelye.ForeColor);
        }

        private void keretSzínGomb_Click(object sender, EventArgs e)
        {
            colorDialog1.Color=userboxKeretPanel.BackColor;
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                userboxKeretPanel.BackColor=colorDialog1.Color;
                színekFrissítése();
            }
        }

        private void képHáttérGomb_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = userboxKépPanel.BackColor;
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                userboxKépPanel.BackColor = colorDialog1.Color;
                színekFrissítése();
            }
        }

        private void képSzövegSzínGomb_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = képHelye.ForeColor;
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                képHelye.ForeColor = colorDialog1.Color;
                színekFrissítése();
            }
        }

        private void szövegHáttérGomb_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = userboxSzövegPanel.BackColor;
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                userboxSzövegPanel.BackColor = colorDialog1.Color;
                színekFrissítése();
            }
        }

        private void szövegSzínGomb_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = szövegHelye.ForeColor;
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                szövegHelye.ForeColor = colorDialog1.Color;
                színekFrissítése();
            }
        }

        private void Főablak_Load(object sender, EventArgs e)
        {
            színekFrissítése();
        }

        private void képHáttérKonvert_Click(object sender, EventArgs e)
        {
            Color újSzín;
            try
            {
                újSzín = QcColorConverter.sztringbőlSzín(képHáttérText.Text);
            }
            catch (Exception ex)
            {
                return;
            }
            userboxKépPanel.BackColor = újSzín;
            színekFrissítése();
        }

        private void képSzövegSzínKonvert_Click(object sender, EventArgs e)
        {
            Color újSzín;
            try {
                újSzín = QcColorConverter.sztringbőlSzín(képSzövegSzínText.Text);
            }
            catch (Exception ex)
            {
                return;
            }
            képHelye.ForeColor = újSzín;
            színekFrissítése();
        }

        private void szövegHáttérKonvert_Click(object sender, EventArgs e)
        {
            Color újSzín;
            try
            {
                újSzín = QcColorConverter.sztringbőlSzín(szövegHáttérText.Text);
            }
            catch (Exception ex)
            {
                return;
            }
            userboxSzövegPanel.BackColor = újSzín;
            színekFrissítése();
        }

        private void szövegSzínKonvert_Click(object sender, EventArgs e)
        {
            Color újSzín;
            try
            {
                újSzín = QcColorConverter.sztringbőlSzín(szövegSzínText.Text);
            }
            catch (Exception ex)
            {
                return;
            }
            szövegHelye.ForeColor = újSzín;
            színekFrissítése();
        }

        private void keretSzínKonvert_Click(object sender, EventArgs e)
        {
            Color újSzín;
            try
            {
                újSzín = QcColorConverter.sztringbőlSzín(keretSzínText.Text);
            }
            catch (Exception ex)
            {
                return;
            }
            userboxKeretPanel.BackColor = újSzín;
            színekFrissítése();
        }

        private void színesLinkGomb_Click(object sender, EventArgs e)
        {
            színesLinkAblak abl = new színesLinkAblak("", "");
            GroupBox gb = (GroupBox)abl.Controls["groupBox1"];

            if (abl.ShowDialog() == DialogResult.OK)
            {
                string szlSzöveg = "<link|" + ((TextBox)gb.Controls["hivatkozottSzöveg"]).Text + "|" +
                ((TextBox)gb.Controls["hivatkozóSzöveg"]).Text + "|";
                if (abl.vanColor == true)
                {
                    szlSzöveg += QcColorConverter.színbőlString(((Panel)gb.Controls["linkSzínePanel"]).BackColor);
                }
                szlSzöveg += ">";
                userboxSzöveg.AppendText(szlSzöveg);

             /*   int oldSel = userboxSzöveg.SelectionStart;
                if (userboxSzöveg.Text != "")
                {
                    if (userboxSzöveg.SelectionLength == 0 &&
                        userboxSzöveg.SelectionStart != 0 &&
                        userboxSzöveg.SelectionStart != userboxSzöveg.SelectionLength - 1)
                    {
                        string newUbText = userboxSzöveg.Text.Substring(0, userboxSzöveg.SelectionStart) +
                            szlSzöveg + userboxSzöveg.Text.Substring(userboxSzöveg.SelectionStart, userboxSzöveg.Text.Length -
                                       userboxSzöveg.SelectionStart);

                        userboxSzöveg.Text = newUbText;
                        userboxSzöveg.SelectionStart = oldSel + szlSzöveg.Length;
                    }
                    else if (userboxSzöveg.SelectionStart == 0 &&
                            userboxSzöveg.SelectionLength == 0)
                    {
                        userboxSzöveg.Text = szlSzöveg + userboxSzöveg.Text;
                        userboxSzöveg.SelectionStart = szlSzöveg.Length;
                    }
                    else if (userboxSzöveg.SelectionStart == userboxSzöveg.Text.Length &&
                            userboxSzöveg.SelectionLength == 0)
                    {
                        userboxSzöveg.Text = userboxSzöveg.Text + szlSzöveg;
                        userboxSzöveg.SelectionStart = userboxSzöveg.Text.Length - 1;
                    }
                    else if (userboxSzöveg.SelectionStart == 0 &&
                            userboxSzöveg.SelectionLength == userboxSzöveg.Text.Length)
                    {
                        userboxSzöveg.Text = szlSzöveg;
                        userboxSzöveg.SelectionStart = userboxSzöveg.Text.Length;
                    }

                }
                else
                {
                    userboxSzöveg.Text = szlSzöveg;
                    userboxSzöveg.SelectionStart = szlSzöveg.Length;
                }*/

                this.ActiveControl = this.Controls["userboxSzöveg"];
            }
            

            abl.Dispose();
        }

        private void userboxNeve_Leave(object sender, EventArgs e)
        {
            if (sender.GetType().ToString() == "System.Windows.Forms.TextBox")
            {
                if (((TextBox)sender).BackColor == System.Drawing.Color.PaleVioletRed &&
                    ((TextBox)sender).Text != "")
                {
                    ((TextBox)sender).BackColor = System.Drawing.SystemColors.Window;
                }
            }
            else if (sender.GetType().ToString() == "System.Windows.Forms.ComboBox")
            {
                if (((ComboBox)sender).BackColor == System.Drawing.Color.PaleVioletRed &&
                    ((ComboBox)sender).Text != "")
                {
                    ((ComboBox)sender).BackColor = System.Drawing.SystemColors.Window;
                }
            }
            else if (sender.GetType().ToString() == "System.Windows.Forms.RichTextBox")
            {
                if (((RichTextBox)sender).BackColor == System.Drawing.Color.PaleVioletRed &&
                    ((RichTextBox)sender).Text != "")
                {
                    ((RichTextBox)sender).BackColor = System.Drawing.SystemColors.Window;
                }
            }
        }

        private void névjegyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            névjegyAblak n = new névjegyAblak(programVerzió);

            n.ShowDialog();

            n.Dispose();
        }

        private void újToolStripMenuItem_Click(object sender, EventArgs e)
        {
            userboxKépPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(97)))), ((int)(((byte)(116)))), ((int)(((byte)(173)))));
            userboxSzövegPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(134)))), ((int)(((byte)(157)))), ((int)(((byte)(226)))));
            userboxKeretPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(58)))), ((int)(((byte)(108)))));
            szövegHelye.ForeColor = System.Drawing.Color.Black;
            képHelye.ForeColor = System.Drawing.Color.Black;
            igazításVálasztó.SelectedIndex = -1;
            szerkesztőKategória.Text = "";
            userboxKategória.Text = "";
            userboxNeve.Text = "";
            userboxKép.Text = "";
            userboxSzöveg.Text = "";
            checkBox1.Checked = false;
            this.ActiveControl = userboxNeve;
            színekFrissítése();
        }

        private void képHáttérText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                EventArgs e2 = new EventArgs();
                képHáttérKonvert_Click(sender, e2);
            }
        }

        private void képSzövegSzínText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                EventArgs e2 = new EventArgs();
                képSzövegSzínKonvert_Click(sender, e2);
            }
        }

        private void szövegHáttérText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                EventArgs e2 = new EventArgs();
                szövegHáttérKonvert_Click(sender, e2);
            }
        }

        private void szövegSzínText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                EventArgs e2 = new EventArgs();
                szövegSzínKonvert_Click(sender, e2);
            }
        }

        private void keretSzínText_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                EventArgs e2 = new EventArgs();
                keretSzínKonvert_Click(sender, e2);
            }
        }

        private void checkBox1_CheckStateChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                userboxNeve.Enabled = false;
                szerkesztőKategória.Enabled = false;
                userboxKategória.Enabled = false;
                label5.Enabled = false;
                label6.Enabled = false;
                label8.Enabled = false;
            }
            else
            {
                userboxNeve.Enabled = true;
                szerkesztőKategória.Enabled = true;
                userboxKategória.Enabled = true;
                label5.Enabled = true;
                label6.Enabled = true;
                label8.Enabled = true;
            }
        }

        private void userboxKonvertálásaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string what = Clipboard.GetText();
            string sepa = "(\\s*|\\n*|\\|)*";
            string gsepa =  sepa + "\\|" + sepa;
            Regex regiuserbox = new Regex(".*?\\{\\{\\s*userbox" + gsepa +
                                  "(1=)?\\s*" + "(?<kepcolor>#\\d{3,6}|\\w+)\\s*" + gsepa +
                                  "(2=)?\\s*" + "(?<bkcolor>#\\d{3,6}|\\w+)\\s*" + gsepa +
                                  "(3=)?\\s*" + "(?<pic>.*?)\\s*" + gsepa +
                                  "(4=)?\\s*" + "(?<text>.*?)\\s*" + gsepa +
                                  "(5=)?\\s*" + "(?<textalign>.*?)\\s*" + gsepa +
                                  "(6=)?\\s*" + "(?<text>#\\d{3,6}|\\w+)\\s*" + gsepa +
                                  "(7=)?\\s*" + "(?<keptextcolor>#\\d{3,6}|\\w+)\\s*" +
                                  "\\}\\}.*?"
                                );

            if (regiuserbox.Match(what).Success == true)
            {
                userboxSzöveg.Text = regiuserbox.Match(what).Groups["text"].ToString();
            }

            újToolStripMenuItem_Click(userboxKonvertálásaToolStripMenuItem, e);
        }
    }

    #region Saját színkonvertáló osztály
    public static class QcColorConverter
    {
        
        public static Color sztringbőlSzín(string s)
        {
            switch (s.ToLower())
            {
                #region sok-sok szín
                case "indianred": return Color.FromArgb(205, 92, 92);
                case "lightcoral": return Color.FromArgb(240, 128, 128);
                case "salmon": return Color.FromArgb(250, 128, 114);
                case "darksalmon": return Color.FromArgb(233, 150,122);
                case "lightsalmon": return Color.FromArgb(255, 160, 122);
                case "crimson": return Color.FromArgb(220, 20, 60);
                case "red": return Color.FromArgb(255, 0, 0);
                    case "piros": return Color.FromArgb(255, 0, 0);
                    case "vörös": return Color.FromArgb(255, 0, 0);
                case "firebrick": return Color.FromArgb(178, 34, 34);
                case "darkred": return Color.FromArgb(139, 0, 0);
                case "pink": return Color.FromArgb(255, 192, 203);
                    case "rózsaszín": return Color.FromArgb(255, 192, 203);
                case "lightpink": return Color.FromArgb(255, 182, 193);
                    case "világosrózsaszín": return Color.FromArgb(255, 182, 193);
                case "hotpink": return Color.FromArgb(255, 105, 180);
                case "deeppink": return Color.FromArgb(255, 20, 147);
                case "mediumvioletred": return Color.FromArgb(199, 21, 133);
                case "palevioletred": return Color.FromArgb(219, 112, 147);
                case "coral": return Color.FromArgb(255, 127, 80);
                case "tomato": return Color.FromArgb(255, 99, 71);
                case "orangered": return Color.FromArgb(255, 69, 0);
                case "darkorange": return Color.FromArgb(255, 140, 0);
                case "orange": return Color.FromArgb(255, 165, 0);
                    case "narancssárga": return Color.FromArgb(255, 165, 0);
                case "gold": return Color.FromArgb(255, 215, 0);
                    case "arany": return Color.FromArgb(255, 215, 0);
                case "yellow": return Color.FromArgb(255, 255, 0);
                    case "sárga": return Color.FromArgb(255, 255, 0);
                case "lightyellow": return Color.FromArgb(255, 255, 224);
                    case "világossárga": return Color.FromArgb(255, 255, 224);
                case "lemonchiffon": return Color.FromArgb(255, 250, 205);
                case "lightgoldenrodyellow": return Color.FromArgb(250, 250, 210);
                case "papayawhip": return Color.FromArgb(255, 239, 213);
                case "moccasin": return Color.FromArgb(255, 228, 181);
                case "peachpuff": return Color.FromArgb(255, 218, 185);
                case "palegoldenrod": return Color.FromArgb(238, 232 ,170);
                case "khaki": return Color.FromArgb(240, 230, 140);
                    case "keki": return Color.FromArgb(240, 230, 140);
                case "darkkhaki": return Color.FromArgb(189, 183, 107);
                    case "sötétkeki": return Color.FromArgb(189, 183, 107);
                case "lavender": return Color.FromArgb(230, 230, 250);
                case "thistle": return Color.FromArgb(216, 191, 216);
                case "plum": return Color.FromArgb(221, 160, 221);
                case "violet": return Color.FromArgb(238, 130, 238);
                case "orchid": return Color.FromArgb(218, 112, 214);
                case "fuchsia": return Color.FromArgb(255, 0, 255);
                case "mediumorchid": return Color.FromArgb(186, 85, 211);
                case "mediumpurple":  return Color.FromArgb(147, 112, 219);
                case "blueviolet": return Color.FromArgb(138, 43, 226);
                case "darkviolet": return Color.FromArgb(148, 0, 211);
                case "darkorchid": return Color.FromArgb(153, 50, 204);
                case "darkmagenta": return Color.FromArgb(139, 0, 139);
                case "purple": return Color.FromArgb(128, 0, 128);
                    case "lila": return Color.FromArgb(128, 0, 128);
                case "indigo": return Color.FromArgb(75, 0, 130);
                    case "indigókék": return Color.FromArgb(75, 0, 130);
                case "slateblue": return Color.FromArgb(106, 90, 205);
                case "darkslateblue": return Color.FromArgb(72, 61, 139);
                case "mediumslateblue": return Color.FromArgb(123, 104, 238);
                case "greenyellow": return Color.FromArgb(173, 255, 47);
                    case "zöldessárga": return Color.FromArgb(173, 255, 47);
                case "chartreuse": return Color.FromArgb(127, 255, 0);
                case "lawngreen": return Color.FromArgb(124, 252, 0);
                    case "fűzöld": return Color.FromArgb(124, 252, 0);
                case "lime": return Color.FromArgb(0, 255, 0);
                case "limegreen": return Color.FromArgb(50, 205, 50);
                case "palegreen": return Color.FromArgb(152, 251, 152);
                case "lightgreen": return Color.FromArgb(144, 238, 144);
                    case "világoszöld": return Color.FromArgb(144, 238, 144);
                case "mediumspringgreen": return Color.FromArgb(0, 250, 154);
                case "springgreen": return Color.FromArgb(0, 255, 127);
                case "mediumseagreen": return Color.FromArgb(60, 179, 113);
                case "seagreen": return Color.FromArgb(46, 139, 87);
                    case "tengerzöld": return Color.FromArgb(46, 139, 87);
                case "forestgreen": return Color.FromArgb(34, 139, 34);
                case "green": return Color.FromArgb(0, 128, 0);
                    case "zöld": return Color.FromArgb(0, 128, 0);
                case "darkgreen": return Color.FromArgb(0, 100, 0);
                    case "sötétzöld": return Color.FromArgb(0, 100, 0);
                case "yellowgreen": return Color.FromArgb(154, 205, 50);
                    case "sárgászöld": return Color.FromArgb(154, 205, 50);
                case "olivedrab": return Color.FromArgb(107, 142, 35);
                case "olive": return Color.FromArgb(128, 128, 0);
                case "darkolivegreen": return Color.FromArgb(85, 107, 47);
                case "mediumaquamarine": return Color.FromArgb(102, 205, 170);
                case "darkseagreen": return Color.FromArgb(143, 188, 143);
                case "lightseagreen": return Color.FromArgb(32, 178, 170);
                case "darkcyan": return Color.FromArgb(0, 139, 139);
                case "teal": return Color.FromArgb(0, 128, 128);
                case "aqua": return Color.FromArgb(0, 255, 255);
                case "cyan": return Color.FromArgb(0, 255, 255);
                case "lightcyan": return Color.FromArgb(224, 255, 255);
                case "paleturquoise": return Color.FromArgb(175, 238, 238);
                case "aquamarine": return Color.FromArgb(127, 255, 212);
                case "turquoise": return Color.FromArgb(64, 224, 208);
                    case "türkiz": return Color.FromArgb(64, 224, 208);
                    case "türkizkék": return Color.FromArgb(64, 224, 208);
                case "mediumturquoise": return Color.FromArgb(72, 209, 204);
                case "darkturquoise": return Color.FromArgb(0, 206, 209);
                case "cadetblue": return Color.FromArgb(95, 158, 160);
                case "steelblue": return Color.FromArgb(70, 130, 180);
                case "lightsteelblue": return Color.FromArgb(176, 196, 222);
                case "purwablue": return Color.FromArgb(155, 225, 255);
                case "powderblue": return Color.FromArgb(176, 224, 230);
                case "lightblue": return Color.FromArgb(173, 216, 230);
                    case "világoskék": return Color.FromArgb(173, 216, 230);
                case "skyblue": return Color.FromArgb(135, 206, 235);
                    case "égkék": return Color.FromArgb(135, 206, 235);
                case "lightskyblue": return Color.FromArgb(135, 206, 250);
                case "deepskyblue": return Color.FromArgb(0, 191, 255);
                case "dodgerblue": return Color.FromArgb(30, 144, 255);
                case "cornflowerblue": return Color.FromArgb(100, 149, 237);
                case "royalblue": return Color.FromArgb(65, 105, 225);
                case "blue": return Color.FromArgb(0, 0, 255);
                    case "kék": return Color.FromArgb(0, 0, 255);
                case "mediumblue": return Color.FromArgb(0, 0, 205);
                case "darkblue": return Color.FromArgb(0, 0, 139);
                    case "sötétkék": return Color.FromArgb(0, 0, 139);
                case "navy": return Color.FromArgb(0, 0, 128);
                case "midnightblue": return Color.FromArgb(25, 25, 112);

                case "cornsilk": return Color.FromArgb(255, 248, 220);
                case "blanchedalmond": return Color.FromArgb(255, 235, 205);
                case "bisque": return Color.FromArgb(255, 228, 196);
                case "navajowhite": return Color.FromArgb(255, 222, 173);
                case "wheat": return Color.FromArgb(245, 222, 179);
                case "burlywood": return Color.FromArgb(222, 184, 135);
                case "tan": return Color.FromArgb(210, 180, 140);
                case "rosybrown": return Color.FromArgb(188, 143, 143);
                case "sandybrown": return Color.FromArgb(244, 164, 96);
                case "goldenrod": return Color.FromArgb(218, 165, 32);
                case "darkgoldenrod": return Color.FromArgb(184, 134, 11);
                case "peru": return Color.FromArgb(205, 133, 63);
                case "chocolate": return Color.FromArgb(210, 105, 30);
                case "saddlebrown": return Color.FromArgb(139, 69, 19);
                case "sienna": return Color.FromArgb(160, 82, 45);
                case "brown": return Color.FromArgb(165, 42, 42);
                    case "barna": return Color.FromArgb(165, 42, 42);
                case "maroon": return Color.FromArgb(128, 0, 0);
                case "white": return Color.FromArgb(255, 255, 255);
                    case "fehér": return Color.FromArgb(255, 255, 255);
                case "snow": return Color.FromArgb(255, 250, 250);
                case "honeydew": return Color.FromArgb(240, 255, 240);
                case "mintcream": return Color.FromArgb(245, 255, 250);
                case "azure": return Color.FromArgb(240, 255, 255);
                    case "azúrkék": return Color.FromArgb(240, 255, 255);
                case "aliceblue": return Color.FromArgb(240, 248, 255);
                case "ghostwhite": return Color.FromArgb(248, 248, 255);
                case "whitesmoke": return Color.FromArgb(245, 245, 245);
                case "seashell": return Color.FromArgb(255, 245, 238);
                case "beige": return Color.FromArgb(245, 245, 220);
                case "oldlace": return Color.FromArgb(253, 245, 230);
                case "floralwhite": return Color.FromArgb(255, 250, 240);
                case "ivory": return Color.FromArgb(255, 255, 240);
                case "antiquewhite": return Color.FromArgb(250, 235, 215);
                case "linen": return Color.FromArgb(250, 240, 230);
                case "lavenderblush": return Color.FromArgb(255, 240, 245);
                case "mistyrose": return Color.FromArgb(255, 228, 225);
                case "gainsboro": return Color.FromArgb(220, 220, 220);
                case "lightgrey": return Color.FromArgb(211, 211, 211);
                    case "világosszürke": return Color.FromArgb(211, 211, 211);
                case "silver": return Color.FromArgb(192, 192, 192);
                    case "ezüst": return Color.FromArgb(192, 192, 192);
                case "darkgray": return Color.FromArgb(169, 169, 169);
                    case "sötétszürke": return Color.FromArgb(169, 169, 169);
                case "gray": return Color.FromArgb(128, 128, 128);
                    case "szürke": return Color.FromArgb(128, 128, 128);
                case "dimgray": return Color.FromArgb(105, 105, 105);
                case "lightslategray": return Color.FromArgb(119, 136, 153);
                case "slategray": return Color.FromArgb(112, 128, 144);
                case "darkslategray": return Color.FromArgb(47, 79, 79);
                case "black": return Color.FromArgb(0, 0, 0);
                    case "fekete": return Color.FromArgb(0, 0, 0);
                #endregion
            }
            if ((s.Length > 7 || s.Length < 6) ||
                (s.Length == 7 && s[0] != '#') ||
                (s.Length == 6 && s.IndexOf('#') != -1))
            {
                MessageBox.Show("A szín nem megfelelő.", "Userbox Editor", MessageBoxButtons.OK, MessageBoxIcon.Information);
                throw new Exception();
            }
            if (s.Length == 7)
            {
                return Color.FromArgb(System.Convert.ToByte(s.Substring(1, 2), 16),
                            System.Convert.ToByte(s.Substring(3, 2), 16),
                            System.Convert.ToByte(s.Substring(5, 2), 16));
            }
            else
            {
                return Color.FromArgb(System.Convert.ToByte(s.Substring(0, 2), 16),
                            System.Convert.ToByte(s.Substring(2, 2), 16),
                            System.Convert.ToByte(s.Substring(4, 2), 16));
            }
        }

        public static string színbőlString(Color c)
        {
            return "#" + String.Format("{0:x2}", c.R).ToUpper() +
                         String.Format("{0:x2}", c.G).ToUpper() +
                         String.Format("{0:x2}", c.B).ToUpper();
        }

    }
    #endregion
}
